package com.atguigu.day20.notify03.n3;

//todo 服务员线程
public class WaiterThread extends Thread{

  private Bar bar;

    public WaiterThread(Bar bar) {
        this.bar = bar;
    }

    @Override
    public void run() {
        //服务员  上菜   如果吧台上没有菜了    服务员等待
        while (true){
            synchronized (bar) {
                //1.判断吧台菜的数量 <=0 等待
                //todo 唤醒后再校验一次 是否应该继续执行
                while (bar.count<= Bar.MIN_COUNT){
                    try {
                        bar.wait();
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
                //2.上菜
                bar.count--;
                //展示
                System.out.println(getName() + " 上了一道菜,吧台上还有[" + bar.count + "]道菜");
                //3.通知厨师做菜
                bar.notifyAll();

            }
        }
    }
}
